// const jwt = require("jsonwebtoken");
const { verifyToken } = require('../utils/jwt')

// 权限控制中间件
const authMiddleware = async (req, res, next) => {
  // 这里存在三种可能，
  // 1、没有传token
  // 2、传递的token失效
  // 3、token正常
  const token = String(req.headers.authorization).split(' ')[1]
  // 没有token
  if (!token)
    return res.status(401).send({
      msg: '请先登录或者检查是否携带了token'
    })
  try {
    // 验证token，如果token失效，会抛出异常,如果正常，会返回解码后的信息
    const decoded = await verifyToken(token)
    // 解码后的信息存入req中，方便后续使用
    req.user = decoded
    next()
  } catch (err) {
    // token失效
    return res.status(401).send({
      msg: 'token失效，请重新登录'
    })
  }
}

module.exports = authMiddleware
